<?php
/**
 * Created by PhpStorm.
 * User: MarcosAlex
 * Date: 11/09/14
 * Time: 09:45
 */


/**
 * NA TABELA DE REGISTRO, QUANDO A SITUAÇÃO FOR:
 * 0 = REGISTRO DE PONTO NORMAL
 * 1 = REGISTRO DE ATESTADO
 * 2 = REGISTRO DE ABONO
 *
 */



//FUNÇÃO QUE VERIFICA SE A DATA VERIFICADA ESTÁ ENTRE O PERIODO DE FERIAS DO CONTRATADO
function folhaPonto_verificaFerias($data, $matricula, $conexao, $mes){

    $sql =  sprintf("SELECT * FROM ferias where FKfuncionario = '%s'
                    and (`dataInicio` BETWEEN '2014-%d-01' AND '2014-%d-30'
                    or  `dataFim` BETWEEN '2014-%d-01' AND '2014-%d-30')",$matricula, $mes, $mes, $mes, $mes);
    $query = @mysqli_query($conexao, $sql);
    $row = @mysqli_fetch_assoc($query);
    $dataInicio = strtotime($row['dataInicio']);
    $dataFim = strtotime($row['dataFim']);
    $data = strtotime($data);

    if($data >= $dataInicio && $data <= $dataFim){
        //ESTA DE FÉRIAS NESTA DATA
        return true;
    } else {
        //NÃO ESTÁ DE FERIAS NESTA DATA
        return false;
    }
}





//ESTA FUNÇÃO BUSCA TODAS AS INFORMAÇÕES DO PONTO DE UM FUNCIONÁRIO REFERENTES A UMA DATA X, COM POSSIBILIDADE DE ATÉ
// 6 ENTRADAS E SAÍDAS, BUSCA TAMBEM NOME, MATRICULA, MATRICULA CLIENTE, CONTRATO
function folhaPonto_pondoDoDia($conexao, $data, $matricula){

    $dadosTabelaRegistro = array();  // ENTRADAS E SAÍDAS
    $dadosFolhaPonto = array(); // ARRAY QUE ARMAZENA DADOS DAS TABELAS PONTO E REGISTRO

    //SELECT QUE BUSCA AS INFORMAÇÕES DO PONTO ATÉ A DATA, NÃO BUSCA AS INFORMAÇÕES DE ENTRADA E SAÍDA
    $sqlPonto = sprintf("select
                        f.matricula,
                        f.matriculaCliente,
                        f.nome,
                        f.contrato,
                        f.gerencia,
                        p.dataPonto,
                        p.idPonto
                        from funcionario as f
                        inner join ponto as p on f.matricula = p.FKfuncionario
                        where dataPonto = '%s' and matricula = '%s'", $data, $matricula);
    $queryPonto = mysqli_query($conexao, $sqlPonto);

    if ($ok = (mysqli_num_rows($queryPonto)) > 0 ){

        $resultadoPonto = mysqli_fetch_array($queryPonto);
        //SELECT QUE BUSCA OS REGISTROS DE ENTRADA E SAÍDA REFERENTE A DATA QUE SE ENCONTRA NA TABELA PONTO
        $sqlRegistro = sprintf("select entrada, saida, situacao, obs_registro from registro
                                            where FKponto = %d ORDER BY entrada", $resultadoPonto['idPonto']);

        $queryRegistro = mysqli_query ($conexao, $sqlRegistro);

        while ($resultadoRegistro = mysqli_fetch_array($queryRegistro)){
            $dadosTabelaRegistro[] = array("entrada" => $resultadoRegistro['entrada'],
                "saida" => $resultadoRegistro['saida'],
                "situacao" => $resultadoRegistro['situacao'],
                "obs_registro" => $resultadoRegistro['obs_registro']);
        }

        $dadosFolhaPonto = array("matricula" => $resultadoPonto['matricula'],
            "matriculaCliente" =>       $resultadoPonto['matriculaCliente'],
            "nome" =>       $resultadoPonto['nome'],
            "idPonto" =>    $resultadoPonto['idPonto'],
            "gerencia" =>   $resultadoPonto['gerencia'],
            "dataPonto" =>  $resultadoPonto['dataPonto'],
            "entrada1" =>   (isset($dadosTabelaRegistro[0]['entrada'])) ? $dadosTabelaRegistro[0]['entrada'] : "",
            "saida1" =>     (isset($dadosTabelaRegistro[0]['saida'])) ? $dadosTabelaRegistro[0]['saida'] : "",
            "obs1" =>       (isset($dadosTabelaRegistro[0]['obs_registro'])) ? $dadosTabelaRegistro[0]['obs_registro'] : "",
            "situacao1" =>  (isset($dadosTabelaRegistro[0]['situacao'])) ? $dadosTabelaRegistro[0]['situacao'] : "",
            "entrada2" =>   (isset($dadosTabelaRegistro[1]['entrada'])) ? $dadosTabelaRegistro[1]['entrada'] : "",
            "saida2" =>     (isset($dadosTabelaRegistro[1]['saida'])) ? $dadosTabelaRegistro[1]['saida'] : "",
            "situacao2" =>  (isset($dadosTabelaRegistro[1]['situacao'])) ? $dadosTabelaRegistro[1]['situacao'] : "",
            "obs2" =>       (isset($dadosTabelaRegistro[1]['obs_registro'])) ? $dadosTabelaRegistro[1]['obs_registro'] : "",
            "entrada3" =>   (isset($dadosTabelaRegistro[2]['entrada'])) ? $dadosTabelaRegistro[2]['entrada'] : "",
            "saida3" =>     (isset($dadosTabelaRegistro[2]['saida'])) ? $dadosTabelaRegistro[2]['saida'] : "",
            "situacao3" =>  (isset($dadosTabelaRegistro[2]['situacao'])) ? $dadosTabelaRegistro[2]['situacao'] : "",
            "obs3" =>       (isset($dadosTabelaRegistro[2]['obs_registro'])) ? $dadosTabelaRegistro[2]['obs_registro'] : "",
            "entrada4" =>   (isset($dadosTabelaRegistro[3]['entrada'])) ? $dadosTabelaRegistro[3]['entrada'] : "",
            "saida4" =>     (isset($dadosTabelaRegistro[3]['saida'])) ? $dadosTabelaRegistro[3]['saida'] : "",
            "situacao4" =>  (isset($dadosTabelaRegistro[3]['situacao'])) ? $dadosTabelaRegistro[3]['situacao'] : "",
            "obs4" =>       (isset($dadosTabelaRegistro[3]['obs_registro'])) ? $dadosTabelaRegistro[3]['obs_registro'] : "",
            "entrada5" =>   (isset($dadosTabelaRegistro[4]['entrada'])) ? $dadosTabelaRegistro[4]['entrada'] : "",
            "saida5" =>     (isset($dadosTabelaRegistro[4]['saida'])) ? $dadosTabelaRegistro[4]['saida'] : "",
            "situacao5" =>  (isset($dadosTabelaRegistro[4]['situacao'])) ? $dadosTabelaRegistro[4]['situacao'] : "",
            "obs5" =>       (isset($dadosTabelaRegistro[4]['obs_registro'])) ? $dadosTabelaRegistro[4]['obs_registro'] : "",
            "entrada6" =>   (isset($dadosTabelaRegistro[5]['entrada'])) ? $dadosTabelaRegistro[5]['entrada'] : "",
            "saida6" =>     (isset($dadosTabelaRegistro[5]['saida'])) ? $dadosTabelaRegistro[5]['saida'] : "",
            "situacao6" =>  (isset($dadosTabelaRegistro[5]['situacao'])) ? $dadosTabelaRegistro[5]['situacao'] : "",
            "obs6" =>       (isset($dadosTabelaRegistro[5]['obs_registro'])) ? $dadosTabelaRegistro[5]['obs_registro'] : "");


        return $dadosFolhaPonto;

    }else {

        return false;

    }
}

//ESTA FUNÇÃO É UTILIZADA PARA BUSCAR INFORMAÇÕES DE UM REGISTRO ATRAVÉS DE UM HORÁRIO.
function folhaPonto_buscaRegistro($conexao, $idPonto, $horario){

    $sql = sprintf("SELECT * FROM registro where FKponto = %d and (entrada = '%s' or saida = '%s')",$idPonto, $horario, $horario);
    $query =  mysqli_query($conexao, $sql);
    $resultado = mysqli_fetch_array($query);
    return $resultado;
}



/*FUNÇÃO CRIADA PARA JUSTIFICAR A DATA COM ABONO OU ATESTADO, PARA REALIZAR É PRECISO PREENCHER
 * O HORARIO DE ENTRADA E SAÍDA REFERENTE AO TEMPO JUSTIFICAD, E EM SEGUIDA,
 * INFORMAR QUAL A SITUAÇÃO (CAMPO CONTIDO NA TABELA DE REGISTRO).
 */

function folhaPonto_Justificar($conexao, $entrada, $saida, $tipoJustificacao,$data, $matricula, $idPonto, $obs){
    $erro = 0;
    $sqlVerifica = sprintf("select * from registro where FKponto = %d",$idPonto);
    $queryVerifica = mysqli_query($conexao, $sqlVerifica);
    while ($dados = mysqli_fetch_array($queryVerifica)){
        if (horasToMinutos($entrada) >= horasToMinutos($dados['entrada']) && horasToMinutos($entrada) <= horasToMinutos($dados['saida'])){
            $erro ++;
        } else if (horasToMinutos($saida) >= horasToMinutos($dados['entrada']) && horasToMinutos($entrada) <= horasToMinutos($dados['saida'])){
            $erro++;
        }
    }

    if ($erro == 0){
        if ($idPonto != ""){
        $sql = sprintf("insert into registro (idRegistro, entrada, saida, situacao, FKponto, obs_registro) values
                    (null, '%s', '%s', %d, %d, '%s')", $entrada, $saida, $tipoJustificacao, $idPonto, $obs);
        $query = mysqli_query($conexao, $sql);
        } else {
            $sql = sprintf("insert into ponto ( idponto, dataPonto, FKfuncionario) values
                    (null, '%s', '%s')", $data, $matricula);

            $query = mysqli_query($conexao, $sql);
            $sql = sprintf("insert into registro (idRegistro, entrada, saida, situacao, FKponto, obs_registro) values
                    (null, '%s', '%s', %d, (SELECT LAST_INSERT_ID()), '%s')", $entrada, $saida, $tipoJustificacao, $obs);
            $query = mysqli_query($conexao, $sql);
        }
        return true;
    } else {

        return false;
    }


}



//ESTA FUNÇÃO RETORNA APENAS FUNCIONÁRIOS QUE ESTÃO CONTIDOS NO RELATÓRIO DO KAMBAM
function folhaPonto_retornaFuncionarios($conexao){
    $sql = ("SELECT matricula, matriculaCliente, nome, max(FKfuncionario)
            from funcionario inner join ponto on fkfuncionario = matricula
            where contrato = 'CLT'
            group by matricula, matriculaCliente, nome order by nome");
    $query = mysqli_query($conexao, $sql );
    $dados =  array();
    while ($resultado = mysqli_fetch_array($query)){
        $dados[] = array("matricula"=> $resultado['matricula'],
                                    "matriculaCliente" => $resultado['matriculaCliente'],
                                    "nome"=> $resultado['nome']);

    }

    return $dados;
}


function folhaPonto_procuraFuncionario($conexao, $matricula){

    $sql = sprintf("select matricula, matriculaCliente, nome, gerencia from funcionario where matricula = '%s'",$matricula);
    $query = mysqli_query($conexao, $sql);
    $resultado = mysqli_fetch_array($query);

    return $resultado;
}


function folhaPonto_alterarRegistroEntrada ($conexao, $entradaNova, $entradaAntiga, $idPonto, $obs){

    if ($entradaNova != ""){
        $erro = 0;
        $idRegistro = folhaPonto_buscaRegistro($conexao, $idPonto, $entradaAntiga);
        $sqlVerifica = sprintf("select * from registro where FKponto = %d",$idPonto);
        $queryVerifica = mysqli_query($conexao, $sqlVerifica);
        while ($dados = mysqli_fetch_array($queryVerifica)){
            if (horasToMinutos($entradaNova) >= horasToMinutos($dados['entrada']) && horasToMinutos($entradaNova) <= horasToMinutos($dados['saida']) && $idRegistro['idRegistro'] != $dados['idRegistro']){
                $erro ++;
            }
        }
    }
    echo $entradaNova;
    if ($entradaNova == ""){
        $sql = sprintf("DELETE FROM registro WHERE entrada = '%s' and FKponto = %d",$entradaAntiga, $idPonto);
        $query = mysqli_query($conexao, $sql);
    } else if ($erro == 0){
        $sql = sprintf("UPDATE registro set entrada = '%s', obs_registro = '%s' where FKponto = %d and entrada = '%s'",$entradaNova, $obs, $idPonto, $entradaAntiga);
        $query = mysqli_query($conexao, $sql);

    } else{
        return false;
    }

}

function folhaPonto_alterarRegistroSaida ($conexao, $saidaNova, $saidaAntiga, $idPonto, $obs){


    if ($saidaNova != ""){
        $erro = 0;
        $idRegistro = folhaPonto_buscaRegistro($conexao, $idPonto, $saidaAntiga);
        $sqlVerifica = sprintf("select * from registro where FKponto = %d",$idPonto);
        $queryVerifica = mysqli_query($conexao, $sqlVerifica);
        while ($dados = mysqli_fetch_array($queryVerifica)){
            if (horasToMinutos($saidaNova) >= horasToMinutos($dados['entrada']) && horasToMinutos($saidaNova) <= horasToMinutos($dados['saida'])  && $idRegistro['idRegistro'] != $dados['idRegistro']){
                $erro ++;
            }
        }
    }

    if ($saidaNova == ""){
        $sql = sprintf("DELETE FROM registro WHERE saida = '%s' and FKponto = %d",$saidaAntiga, $idPonto);
        $query = mysqli_query($conexao, $sql);
    } else if ($erro == 0){
        $sql = sprintf("UPDATE registro set saida = '%s', obs_registro = '%s' where FKponto = %d and saida = '%s'",$saidaNova, $obs, $idPonto, $saidaAntiga);
        $query = mysqli_query($conexao, $sql);
    } else{
        return false;
    }


}


function folhaPonto_retornaJustificaticas ($arrayPontoDoDia){
    if (is_array($arrayPontoDoDia)){

        $texto = "";

        $obs = "";
        $situacao = "";
        $entrada = "";
        $saida = "";
        for ($i = 1; $i <= 6; $i++){
            $obs = "obs".$i;
            $situacao = "situacao".$i;
            $entrada = "entrada".$i;
            $saida = "saida".$i;

            if ($arrayPontoDoDia[$obs] != ""){
                if($arrayPontoDoDia[$situacao] == 1){
                    $texto .= "Atestado: ".$arrayPontoDoDia[$obs]."| Referente ao período entre ".$arrayPontoDoDia[$entrada]." e ".$arrayPontoDoDia[$saida]." horas.<br/>";
                } else if ($arrayPontoDoDia[$situacao] == 2) {
                    $texto .= "Abono: ".$arrayPontoDoDia[$obs]."| Referente ao período entre ".$arrayPontoDoDia[$entrada]." e ".$arrayPontoDoDia[$saida]." horas.<br/>";
                }
            }

        }

        return $texto;

    } else {
        return false;
    }
}






?>